//
//  AlipayUtil.m
//  JiaoX
//
//  Created by jiaoxiu－005 on 15/1/26.
//  Copyright (c) 2015年 北京娇羞科技有限公司. All rights reserved.
//

#import "AlipayUtil.h"
#import <AlipaySDK/AlipaySDK.h>
#import "Order.h"
#import "DataSigner.h"
#import "APAuthV2Info.h"
#import "AlipayKeys.h"

@implementation AlipayUtil

/**
 * 获取订单信息
 *
 * @param orderNum   订单号
 * @param prodName   商品名
 * @param prodDetail 商品详细
 * @param money      金额
 * @param notify_url 回调服务器的 url
 * @return
 */
-(void)callPay:(NSString *)orderNum prodName:(NSString *)prodName prodDetail:(NSString *)prodDetail money:(NSString *)money notify_url:(NSString *)notify_url showProdUrl:(NSString *)showProdUrl{

    /*
     *生成订单信息及签名
     */
    //将商品信息赋予AlixPayOrder的成员变量
    Order *order = [[Order alloc] init];
    order.partner = DEFAULT_PARTNER;
    order.seller = DEFAULT_SELLER;// 卖家支付宝账号
    order.tradeNO = orderNum ; //订单ID（由商家自行制定）
    order.productName = prodName; //商品标题
    order.productDescription = prodDetail; //商品描述
    order.amount = money; //商品价格
    if(![Utils isBlankString:notify_url]){
        order.notifyURL = notify_url; //回调URL
    }
    order.service = @"mobile.securitypay.pay";// 接口名称
    order.paymentType = @"1";// 支付类型 , 默认为1（商品购买）
    order.inputCharset = @"utf-8";
    order.itBPay = @"3d";// 未付款交 易的超时 时间
    if(![Utils isBlankString:showProdUrl]){
     order.showUrl = showProdUrl;// 商品展示 地址 超链接
    }
    
    //应用注册scheme,在AlixPayDemo-Info.plist定义URL types
    NSString *appScheme = @"jiaoxiualipay";
    
    //将商品信息拼接成字符串
    NSString *orderSpec = [order description];
    NSLog(@"orderSpec = %@",orderSpec);
    
    //获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode
    id<DataSigner> signer = CreateRSADataSigner(PRIVATE);
    NSString *signedString = [signer signString:orderSpec];
    
    //将签名成功字符串格式化为订单字符串,请严格按照该格式
    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];
        
        [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            JXLog(@"支付reslut = %@",resultDic);
            JXLog(@"状态%@",resultDic[@"resultStatus"]);
            [self sendPayNotifyStatus:resultDic[@"resultStatus"]];
        }];
        
    }
}
/**
 *  发送支付结果通知
 *
 *  @param resultCode
 */
-(void)sendPayNotifyStatus:(NSString *)resultCode{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"pay_status" object:resultCode];
}

@end
